package com.zhijian.wharf.service;


import com.zhijian.util.page.Page;
import com.zhijian.wharf.entity.po.Role;
import com.zhijian.wharf.entity.vo.request.RoleSearchVo;
import com.zhijian.wharf.entity.vo.response.RoleVo;

import java.util.List;

/**
 * 系统角色信息 业务处理层
 *
 * @author HCG
 * @version 1.0
 * @date 2022-01-22 15:37:30
 */
public interface RoleService {

    /**
     * 主键查询
     *
     * @param id
     * @return
     */
    Role selectById(Long id);

    /**
     * 主键查询vo
     *
     * @param id
     * @return
     */
    RoleVo selectVoById(Long id);

    /**
     * 按照主键删除
     *
     * @param id
     */
    void deleteById(Long id);

    /**
     * 新增
     *
     * @param role
     * @return
     */
    Long insert(Role role);

    /**
     * 更改
     *
     * @param role
     * @return
     */
    boolean update(Role role);

    /**
     * 总数
     *
     * @param roleSearchVo
     * @return
     */
    Integer count(RoleSearchVo roleSearchVo);

    /**
     * 列表
     *
     * @param roleSearchVo
     * @return
     */
    List<RoleVo> selectList(RoleSearchVo roleSearchVo);

    /**
     * 分页查询
     *
     * @param roleSearchVo
     * @return
     */
    Page<RoleVo> selectPage(RoleSearchVo roleSearchVo);

    /**
     * 保存菜单与角色的关系
     *
     * @param roleId
     * @param menuIds
     * @return
     */
    boolean connectMenus(Long roleId, List<Long> menuIds);

    /**
     * 是否是进修、实习、检测辅助人员
     *
     * @param roleIds
     * @return
     */
    boolean isJxOrSxOrFz(List<Long> roleIds);

    /**
     * 根据名称查询
     *
     * @param name
     * @return
     */
    RoleVo selectVoByName(String name);
}